﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Web;
using System.Web.Services;
using NPSoft.Ferrero.DataBridge.BLL;
using NPSoft.Ferrero.DataBridge.Model;
using NPSoft.Ferrero.Framework.BLL;
using NPSoft.Ferrero.Framework.Web;

namespace NPSoft.Ferrero.DataBridge.Web.Services
{
    /// <summary>
    /// Summary description for FerreroChinaToCSVService
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    [System.Web.Script.Services.ScriptService]
    public class FerreroChinaToCSVService : System.Web.Services.WebService
    {

        /// <summary>
        /// 将数据导出到CSV.
        /// </summary>
        /// <returns>导出成功true;导出失败false</returns>
        [WebMethod]
        public string GetDistributor()
        {
            string path = Server.MapPath("/");
            string fullSavePath = path + string.Format(@"Matadata\Out\Distributor\MDM_Distributor_Master_{0}.csv", DateTime.Now.ToString("yyyyMMddHHss"));

            // Delete the file if it exists.
            if (File.Exists(fullSavePath))
            {
                File.Delete(fullSavePath);
            }

            //Create the file.
            using (FileStream fs = File.Create(fullSavePath))
            {
            }
            IBLL<Distributor> bllDist = NPWebApp.Container.Resolve<IBLL<Distributor>>();
            ICollection<Distributor> table = bllDist.Search(new System.Text.StringBuilder());
            List<Distributor> cloumn = table.ToList();

            Type type = typeof(Distributor);
            PropertyInfo[] props = GetPropertyInfoArray(type);
            StringBuilder strValue = new StringBuilder();
            StringBuilder strColumn = new StringBuilder();
            StreamWriter sw = null;

            try
            {
                sw = new StreamWriter(fullSavePath, false, UnicodeEncoding.GetEncoding("UTF-8"));
                for (int i = 0; i < props.Length; i++)
                {
                    strColumn.Append(props[i].Name);
                    strColumn.Append("|");
                }
                strColumn.Remove(strColumn.Length - 1, 1);

                sw.WriteLine(strColumn);    //write the column name


                for (int i = 0; i < cloumn.Count; i++)
                {
                    strValue.Remove(0, strValue.Length); //clear the temp row value
                    strValue.Append(cloumn[i].DIST_FACT_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DIST_FACT_NAME);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DIST_FACT_SHORTNAME);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DIST_FACT_SHORTNAME_EN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DIST_GROUP_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DIST_GROUP);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_ADDR_1);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_ADDR_2);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_ADDR_3);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_ADDR_4);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_ADDR_5);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_ADDR_POSTAL);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_ADDR_CONT_PR);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_ADDR_CONT_NO);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_ADDR_FAX_NO);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_ADDR_E_1);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_ADDR_E_2);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_ADDR_E_3);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_ADDR_E_4);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_ADDR_E_5);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].RENAME_FLAG);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].RENAME_DT);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_CITY_NODE_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_CITY_NODE_CH_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_Cluster_NODE_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_Cluster_NODE_CH_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_Area_NODE_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_Area_NODE_CH_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_Region_NODE_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_Region_NODE_CH_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_Status);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOLD_Con_Ter);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].ADDR_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].ADDR_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIPTO_SHOTNAME);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIPTO_E_SHOTNAME);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_ADDR_1);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_ADDR_2);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_ADDR_3);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_ADDR_4);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_ADDR_5);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_ADDR_POSTAL);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_ADDR_CONT_PR);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_ADDR_CONT_NO);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_ADDR_FAX_NO);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_ADDR_E_1);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_ADDR_E_2);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_ADDR_E_3);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_ADDR_E_4);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_ADDR_E_5);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_CITY_NODE_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_CITY_NODE_CH_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_Cluster_NODE_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_Cluster_NODE_CH_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_Area_NODE_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_Area_NODE_CH_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_Region_NODE_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_Region_NODE_CH_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_Status);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHIP_Con_Ter);
                    sw.WriteLine(strValue); //write the row value
                }
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
            finally
            {
                if (sw != null)
                {
                    sw.Dispose();
                }
            }

            return "Successed";
        }

        [WebMethod]
        public string GetHumanResource()
        {
            string path = Server.MapPath("/");
            string fullSavePath = path + string.Format(@"Matadata\Out\Human_Resource\MDM_Human_Resource_Master_{0}.csv", DateTime.Now.ToString("yyyyMMddHHss"));

            // Delete the file if it exists.
            if (File.Exists(fullSavePath))
            {
                File.Delete(fullSavePath);
            }

            //Create the file.
            using (FileStream fs = File.Create(fullSavePath))
            {
            }
            IBLL<HumanResource> bllHum = NPWebApp.Container.Resolve<IBLL<HumanResource>>();
            ICollection<HumanResource> table = bllHum.Search(new System.Text.StringBuilder());
            List<HumanResource> cloumn = table.ToList();

            Type type = typeof(HumanResource);
            PropertyInfo[] props = GetPropertyInfoArray(type);
            StringBuilder strValue = new StringBuilder();
            StringBuilder strColumn = new StringBuilder();
            StreamWriter sw = null;

            try
            {
                sw = new StreamWriter(fullSavePath, false, UnicodeEncoding.GetEncoding("UTF-8"));
                for (int i = 0; i < props.Length; i++)
                {
                    strColumn.Append(props[i].Name);
                    strColumn.Append("|");
                }
                strColumn.Remove(strColumn.Length - 1, 1);
                sw.WriteLine(strColumn);    //write the column name


                for (int i = 0; i < cloumn.Count; i++)
                {
                    strValue.Remove(0, strValue.Length); //clear the temp row value
                    strValue.Append(cloumn[i].EMP_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].COMPANY_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].EMPGRP_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].EMPGRP_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].PER_SUBAREA_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].PER_SUBAREA_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].PER_SUBAREA_DESC_CHI);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DEP_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DEP_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].POS_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].POS_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].ENG_TIL);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CHI_TIL);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].ORG_UNIT_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].ORG_UNIT_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].LOC_COS_CEN_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].LOC_COS_CEN_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].EMP_ENG_LAS_NM);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].EMP_ENG_FIR_NM);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].EMP_CHI_LAS_NM);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].EMP_CHI_FIR_NM);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].EMP_PY_LAS_NM);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].EMP_PY_FIR_NM);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].GENDER);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].PER_MOB_PHO_NO);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].EMP_LINE_MGR_COMPANY_CODE);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].EMP_LINE_MGR_LOC_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].EMP_LINE_MGR_LOC_ID2);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].EMP_LINE_MGR_LOC_ID3);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].EMP_LINEMGR_FIR_NM);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].EMP_LINEMGR_LAS_NM);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].EMP_LINEMGR_POS_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].EMP_LINEMGR_POS_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].EMP_LINEMGR_USERID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].EMP_LINEMGR_EMAILADDR);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].HIRING_DATE);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].TERMINATION_DATE);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].USER_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].COR_EMAIL_ADDR);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].VENDOR_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].GRADE);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DATA_SOURCE);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].IS_SALES);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].HR_POS_DESC);
                    sw.WriteLine(strValue); //write the row value
                }
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
            finally
            {
                if (sw != null)
                {
                    sw.Dispose();
                }
            }

            return "Successed";
        }

        [WebMethod]
        public string GetGeography()
        {
            string path = Server.MapPath("/");
            string fullSavePath = path + string.Format(@"Matadata\Out\Geography\MDM_Geography_Master_{0}.csv", DateTime.Now.ToString("yyyyMMddHHss"));

            // Delete the file if it exists.
            if (File.Exists(fullSavePath))
            {
                File.Delete(fullSavePath);
            }

            //Create the file.
            using (FileStream fs = File.Create(fullSavePath))
            {
            }
            IBLL<Geography> bllGeo = NPWebApp.Container.Resolve<IBLL<Geography>>();
            ICollection<Geography> table = bllGeo.Search(new System.Text.StringBuilder());
            List<Geography> cloumn = table.ToList();

            Type type = typeof(Geography);
            PropertyInfo[] props = GetPropertyInfoArray(type);
            StringBuilder strValue = new StringBuilder();
            StringBuilder strColumn = new StringBuilder();
            StreamWriter sw = null;

            try
            {
                sw = new StreamWriter(fullSavePath, false, UnicodeEncoding.GetEncoding("UTF-8"));
                for (int i = 0; i < props.Length; i++)
                {
                    strColumn.Append(props[i].Name);
                    strColumn.Append("|");
                }
                strColumn.Remove(strColumn.Length - 1, 1);
                sw.WriteLine(strColumn);    //write the column name


                for (int i = 0; i < cloumn.Count; i++)
                {
                    strValue.Remove(0, strValue.Length); //clear the temp row value
                    strValue.Append(cloumn[i].DST_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DISTRICT);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DST_NM_EN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SR_EMP_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SR_EMP_NM_EN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SR_EMP_NM_CN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SR_USR_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SV_EMP_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SV_EMP_NM_EN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SV_EMP_NM_CN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SV_USR_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DSM_EMP_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DSM_EMP_NM_EN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DSM_EMP_NM_CN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DSM_USR_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CITY_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CITY);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CITY_SAP_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CITY_NM_EN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CITY_TYPE_LY);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CITY_TYPE_TY);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CSM_EMP_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CSM_EMP_NM_EN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CSM_EMP_NM_CN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CSM_USR_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CLS_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CLUSTER);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CLS_NM_EN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CCSM_EMP_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CCSM_EMP_NM_EN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CCSM_EMP_NM_CN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CCSM_USR_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].AREA_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].AREA);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].AREA_NM_EN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].ASM_EMP_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].ASM_EMP_NM_EN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].ASM_EMP_NM_CN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].ASM_USR_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].RGN_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].REGION);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].RGN_NM_EN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].RSM_EMP_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].RSM_EMP_NM_CN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].RSM_EMP_NM_EN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].RSM_USR_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CTY_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].COUNTRY);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CTY_NM_EN);
                    sw.WriteLine(strValue); //write the row value
                }
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
            finally
            {
                if (sw != null)
                {
                    sw.Dispose();
                }
            }

            return "Successed";
        }

        [WebMethod]
        public string GetStore()
        {
            string path = Server.MapPath("/");
            string fullSavePath = path + string.Format(@"Matadata\Out\Store\MDM_Store_Master_{0}.csv", DateTime.Now.ToString("yyyyMMddHHss"));

            // Delete the file if it exists.
            if (File.Exists(fullSavePath))
            {
                File.Delete(fullSavePath);
            }

            //Create the file.
            using (FileStream fs = File.Create(fullSavePath))
            {
            }

            IBLL<Store> bllSto = NPWebApp.Container.Resolve<IBLL<Store>>();
            ICollection<Store> table = bllSto.Search(new System.Text.StringBuilder());
            List<Store> cloumn = table.ToList();

            Type type = typeof(Store);
            PropertyInfo[] props = GetPropertyInfoArray(type);
            StringBuilder strValue = new StringBuilder();
            StringBuilder strColumn = new StringBuilder();
            StreamWriter sw = null;

            try
            {
                sw = new StreamWriter(fullSavePath, false, UnicodeEncoding.GetEncoding("UTF-8"));
                for (int i = 0; i < props.Length; i++)
                {
                    strColumn.Append(props[i].Name);
                    strColumn.Append("|");
                }
                strColumn.Remove(strColumn.Length - 1, 1);
                sw.WriteLine(strColumn);    //write the column name


                for (int i = 0; i < cloumn.Count; i++)
                {
                    strValue.Remove(0, strValue.Length); //clear the temp row value
                    strValue.Append(cloumn[i].CUST_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CUST_NAME);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CUST_NAME2);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CUST_CLUSTER);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SECOUND_DIST);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].STORE_STATUS);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CUST_DIST_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CUST_HIER1);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CUST_HIER2);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CUST_HIER3);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].KEYACC_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CUST_TYPE);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CUST_ATTRIBUTE);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SUBWAREHOUSE_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SUB_CUST_NAME);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].RATIO);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].STORE_SQUARE);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].ADDR);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].ADDR_POSTAL);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CONT_PR);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CONT_NO);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].ADD_CONT_NO);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CONT_FAXNO);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CONT_EMAIL);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].USER_DEFINE1);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].USER_DEFINE2);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].USER_DEFINE3);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].USER_DEFINE4);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].USER_DEFINE5);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].HQ_DEFINE1);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].HQ_DEFINE2);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].HQ_DEFINE3);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].HQ_DEFINE4);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].HQ_DEFINE5);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SR_TYPE);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].STORE_ADMIN_DISTRICT);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CUST_STORE_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].STORE_IS_FRANCHISE);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].HAS_DISTRIBUTOR2);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DST_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DISTRICT);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DST_NM_EN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SR_EMP_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SR_EMP_NM_CN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SR_EMP_NM_EN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SR_USR_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SV_EMP_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SV_EMP_NM_CN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SV_EMP_NM_EN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SV_USR_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DSM_EMP_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DSM_EMP_NM_CN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DSM_EMP_NM_EN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DSM_USR_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CITY_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CITY);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CITY_SAP_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CITY_NM_EN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CITY_TYPE_LY);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CITY_TYPE_TY);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CSM_EMP_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CSM_EMP_NM_EN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CSM_EMP_NM_CN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CSM_USR_ID);
                    sw.WriteLine(strValue); //write the row value
                }
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
            finally
            {
                if (sw != null)
                {
                    sw.Dispose();
                }
            }

            return "Successed";
        }

        [WebMethod]
        public string GetBanner()
        {
            string path = Server.MapPath("/");
            string fullSavePath = path + string.Format(@"Matadata\Out\Banner\MDM_Banner_Master_{0}.csv", DateTime.Now.ToString("yyyyMMddHHss"));

            // Delete the file if it exists.
            if (File.Exists(fullSavePath))
            {
                File.Delete(fullSavePath);
            }

            //Create the file.
            using (FileStream fs = File.Create(fullSavePath))
            {
            }
            IBLL<Banner> bllBan = NPWebApp.Container.Resolve<IBLL<Banner>>();
            ICollection<Banner> table = bllBan.Search(new System.Text.StringBuilder());
            List<Banner> cloumn = table.ToList();

            Type type = typeof(Banner);
            PropertyInfo[] props = GetPropertyInfoArray(type);
            StringBuilder strValue = new StringBuilder();
            StringBuilder strColumn = new StringBuilder();
            StreamWriter sw = null;

            try
            {
                sw = new StreamWriter(fullSavePath, false, UnicodeEncoding.GetEncoding("UTF-8"));
                for (int i = 0; i < props.Length; i++)
                {
                    strColumn.Append(props[i].Name);
                    strColumn.Append("|");
                }
                strColumn.Remove(strColumn.Length - 1, 1);
                sw.WriteLine(strColumn);    //write the column name


                for (int i = 0; i < cloumn.Count; i++)
                {
                    strValue.Remove(0, strValue.Length); //clear the temp row value
                    strValue.Append(cloumn[i].KA_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].KA_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CUSTOMER_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CUSTOMER_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].BA_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].BA_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CH_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CH_DESC);
                    sw.WriteLine(strValue); //write the row value
                }
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
            finally
            {
                if (sw != null)
                {
                    sw.Dispose();
                }
            }

            return "Successed";
        }

        [WebMethod]
        public string GetData(string Type)
        {
            string msg = string.Empty;
            try
            {
                switch (Type)
                {

                    case "001":
                        msg = GetDistributor();
                        break;

                    case "002": msg = GetHumanResource();
                        break;

                    case "003": msg = GetGeography();
                        break;

                    case "004": msg = GetStore();
                        break;

                    case "005": msg = GetBanner();
                        break;

                    case "006": msg = GetProductCTPrice();
                        break;

                    case "007": msg = GetProduct();
                        break;

                    case "008": msg = GetProductUOM();
                        break;

                    case "009": msg = GetProductRTPrice();
                        break;

                    default:
                        break;
                }
                return msg;
            }
            catch (Exception ex)
            {
                return "Failed : " + ex.Message;
            }
        }

        [WebMethod]
        public string GetProductCTPrice()
        {
            string path = Server.MapPath("/");
            string fullSavePath = path + string.Format(@"Matadata\Out\ProductCTPrice\MDM_Product_Cost_Price_Master_{0}.csv", DateTime.Now.ToString("yyyyMMddHHss"));

            // Delete the file if it exists.
            if (File.Exists(fullSavePath))
            {
                File.Delete(fullSavePath);
            }

            //Create the file.
            using (FileStream fs = File.Create(fullSavePath))
            {
            }
            IBLL<ProductCTPrice> bllProCT = NPWebApp.Container.Resolve<IBLL<ProductCTPrice>>();
            ICollection<ProductCTPrice> table = bllProCT.Search(new System.Text.StringBuilder());
            List<ProductCTPrice> cloumn = table.ToList();

            Type type = typeof(ProductCTPrice);
            PropertyInfo[] props = GetPropertyInfoArray(type);
            StringBuilder strValue = new StringBuilder();
            StringBuilder strColumn = new StringBuilder();
            StreamWriter sw = null;

            try
            {
                sw = new StreamWriter(fullSavePath, false, UnicodeEncoding.GetEncoding("UTF-8"));
                for (int i = 0; i < props.Length; i++)
                {
                    strColumn.Append(props[i].Name);
                    strColumn.Append("|");
                }
                strColumn.Remove(strColumn.Length - 1, 1);
                sw.WriteLine(strColumn);    //write the column name


                for (int i = 0; i < cloumn.Count; i++)
                {
                    strValue.Remove(0, strValue.Length); //clear the temp row value
                    strValue.Append(cloumn[i].PRD_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].UOM);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].RATE);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].RATE_UNIT);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].START_TIME);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].END_TIME);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].TYPE);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].PRI_UNIT);
                    sw.WriteLine(strValue); //write the row value
                }
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
            finally
            {
                if (sw != null)
                {
                    sw.Dispose();
                }
            }

            return "Successed";
        }

        [WebMethod]
        public string GetProduct()
        {
            string path = Server.MapPath("/");
            string fullSavePath = path + string.Format(@"Matadata\Out\Product\MDM_Product_Master_{0}.csv", DateTime.Now.ToString("yyyyMMddHHss"));

            // Delete the file if it exists.
            if (File.Exists(fullSavePath))
            {
                File.Delete(fullSavePath);
            }

            //Create the file.
            using (FileStream fs = File.Create(fullSavePath))
            {
            }
            IBLL<Product> bllPro = NPWebApp.Container.Resolve<IBLL<Product>>();
            ICollection<Product> table = bllPro.Search(new System.Text.StringBuilder());
            List<Product> cloumn = table.ToList();

            Type type = typeof(Product);
            PropertyInfo[] props = GetPropertyInfoArray(type);
            StringBuilder strValue = new StringBuilder();
            StringBuilder strColumn = new StringBuilder();
            StreamWriter sw = null;

            try
            {
                sw = new StreamWriter(fullSavePath, false, UnicodeEncoding.GetEncoding("UTF-8"));
                for (int i = 0; i < props.Length; i++)
                {
                    strColumn.Append(props[i].Name);
                    strColumn.Append("|");
                }
                strColumn.Remove(strColumn.Length - 1, 1);
                sw.WriteLine(strColumn);    //write the column name


                for (int i = 0; i < cloumn.Count; i++)
                {
                    strValue.Remove(0, strValue.Length); //clear the temp row value
                    strValue.Append(cloumn[i].PRD_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].PRD_DESC2);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].PRD_DESC1);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].PRD_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CMCL_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CMCL_NM_CHI);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CMCL_NM_ENG);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SHELF_LIFE);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].PAC_CODE);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].PAC_INFO);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].PCS_CU);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CU_OUTER);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].OUTER_CTN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CU_CTN);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].EAN_NO_EA);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].EAN_NO_SU);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].EAN_NO_CARTON);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].VOLUME);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].QLI);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CTN_PL);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].PRINT_NET_WEIGHT_CU);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].PRINT_NET_WEIGHT_TU);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].NET_WEIGHT_CU);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].NET_WEIGHT_TU);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].GROSS_WEIGHT_CU);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].GROSS_WEIGHT_TU);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].FISCAL_YEAR);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SALES_ORG);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].TYPE);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].QS_CIQ);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SOURCE);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].PLANT);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SUB_CLASS);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SUB_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].BRAND_Code);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].BRAND_Desc);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].BRAND_NickName_Code);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].BRAND_NickName_Desc);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].BRAND_Group_Code);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].BRAND_Group_Desc);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].Category_Code);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].Category_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].Material_Status_Code);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].Material_Promotion_Variant_Code);
                    sw.WriteLine(strValue); //write the row value
                }
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
            finally
            {
                if (sw != null)
                {
                    sw.Dispose();
                }
            }

            return "Successed";
        }

        [WebMethod]
        public string GetProductUOM()
        {
            string path = Server.MapPath("/");
            string fullSavePath = path + string.Format(@"Matadata\Out\ProductUOM\MDM_Product_UOM_Master_{0}.csv", DateTime.Now.ToString("yyyyMMddHHss"));

            // Delete the file if it exists.
            if (File.Exists(fullSavePath))
            {
                File.Delete(fullSavePath);
            }

            //Create the file.
            using (FileStream fs = File.Create(fullSavePath))
            {
            }
            IBLL<ProductUOM> bllProUOM = NPWebApp.Container.Resolve<IBLL<ProductUOM>>();
            ICollection<ProductUOM> table = bllProUOM.Search(new System.Text.StringBuilder());
            List<ProductUOM> cloumn = table.ToList();

            Type type = typeof(ProductUOM);
            PropertyInfo[] props = GetPropertyInfoArray(type);
            StringBuilder strValue = new StringBuilder();
            StringBuilder strColumn = new StringBuilder();
            StreamWriter sw = null;

            try
            {
                sw = new StreamWriter(fullSavePath, false, UnicodeEncoding.GetEncoding("UTF-8"));
                for (int i = 0; i < props.Length; i++)
                {
                    strColumn.Append(props[i].Name);
                    strColumn.Append("|");
                }
                strColumn.Remove(strColumn.Length - 1, 1);
                sw.WriteLine(strColumn);    //write the column name


                for (int i = 0; i < cloumn.Count; i++)
                {
                    strValue.Remove(0, strValue.Length); //clear the temp row value
                    strValue.Append(cloumn[i].PRD_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].UOM_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].ALT_UOM_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].ALT_UOM_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].ALT_UOM_CON);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].BASEUOM_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].UOM_LEVEL);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CONV_FACTOR);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CONV_FACTOR_SML);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SML_UOM);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SALE_UOM);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DEFAULT_UOM);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].PACK_LENGTH);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].PACK_WIDTH);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].PACK_HEIGHT);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DIMENSION_UNIT_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DIMENSION_UNIT);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].NET_WEIGHT);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].GROSS_WEIGHT);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].WEIGHT_UNIT_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].WEIGHT_UNIT);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].VOLUME);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].VOLUME_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].VOLUME_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].EAN_NO);
                    sw.WriteLine(strValue); //write the row value
                }
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
            finally
            {
                if (sw != null)
                {
                    sw.Dispose();
                }
            }

            return "Successed";
        }

        [WebMethod]
        public string GetProductRTPrice()
        {
            string path = Server.MapPath("/");
            string fullSavePath = path + string.Format(@"Matadata\Out\ProductRTPrice\MDM_Product_Retail_Price_Master_{0}.csv", DateTime.Now.ToString("yyyyMMddHHss"));

            // Delete the file if it exists.
            if (File.Exists(fullSavePath))
            {
                File.Delete(fullSavePath);
            }

            //Create the file.
            using (FileStream fs = File.Create(fullSavePath))
            {
            }
            IBLL<ProductRTPrice> bllProRT = NPWebApp.Container.Resolve<IBLL<ProductRTPrice>>();
            ICollection<ProductRTPrice> table = bllProRT.Search(new System.Text.StringBuilder());
            List<ProductRTPrice> cloumn = table.ToList();

            Type type = typeof(ProductRTPrice);
            PropertyInfo[] props = GetPropertyInfoArray(type);
            StringBuilder strValue = new StringBuilder();
            StringBuilder strColumn = new StringBuilder();
            StreamWriter sw = null;

            try
            {
                sw = new StreamWriter(fullSavePath, false, UnicodeEncoding.GetEncoding("UTF-8"));
                for (int i = 0; i < props.Length; i++)
                {
                    strColumn.Append(props[i].Name);
                    strColumn.Append("|");
                }
                strColumn.Remove(strColumn.Length - 1, 1);
                sw.WriteLine(strColumn);    //write the column name


                for (int i = 0; i < cloumn.Count; i++)
                {
                    strValue.Remove(0, strValue.Length); //clear the temp row value
                    strValue.Append(cloumn[i].CMCL_CD);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].FS_YEAR);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CMCL_CN_DESC);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].BRAND);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].START_TIME);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].END_TIME);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CHANNEL);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].PRICE);
                    sw.WriteLine(strValue); //write the row value
                }
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
            finally
            {
                if (sw != null)
                {
                    sw.Dispose();
                }
            }

            return "Successed";
        }

        /// <summary>
        /// 读取属性名称
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        private PropertyInfo[] GetPropertyInfoArray(Type type)
        {
            PropertyInfo[] props = null;
            try
            {
                object obj = Activator.CreateInstance(type);
                props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
            }
            catch (Exception ex)
            { }
            return props;
        }

        [WebMethod]
        public string GetEX_F()
        {
            string path = Server.MapPath("/");
            string fullSavePath = path + string.Format(@"Matadata\Out\EX_F\DMS_Ex_F_{0}.csv", DateTime.Now.ToString("yyyyMMddHHss"));

            // Delete the file if it exists.
            if (File.Exists(fullSavePath))
            {
                File.Delete(fullSavePath);
            }

            //Create the file.
            using (FileStream fs = File.Create(fullSavePath))
            {
            }
            IBLL<Ex_F> blle = NPWebApp.Container.Resolve<IBLL<Ex_F>>();
            ICollection<Ex_F> table = blle.Search(new System.Text.StringBuilder());
            List<Ex_F> cloumn = table.ToList();

            Type type = typeof(Ex_F);
            PropertyInfo[] props = GetPropertyInfoArray(type);
            StringBuilder strValue = new StringBuilder();
            StringBuilder strColumn = new StringBuilder();
            StreamWriter sw = null;

            try
            {
                sw = new StreamWriter(fullSavePath);
                for (int i = 0; i < props.Length; i++)
                {
                    strColumn.Append(props[i].Name);
                    strColumn.Append("|");
                }
                strColumn.Remove(strColumn.Length - 1, 1);
                sw.WriteLine(strColumn);    //write the column name


                for (int i = 0; i < cloumn.Count; i++)
                {
                    strValue.Remove(0, strValue.Length); //clear the temp row value
                    strValue.Append(cloumn[i].SOffName);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].SoffEName);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].City);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CityCode);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].ShipTo);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].ShipToParty);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].OrdRs);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].Material);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].MaterialENName);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].MaterialCNName);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].AcGiDateYearMonth);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].AreaName);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].ClusterName);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].Category);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].DescrizioneSelezione);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].Qli);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].RequiredDelivQty_CT);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].NetValue);
                    sw.WriteLine(strValue); //write the row value
                }
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
            finally
            {
                if (sw != null)
                {
                    sw.Dispose();
                }
            }

            return "Successed";
        }

        [WebMethod]
        public string GetNew_Mapped_Store()
        {
            string path = Server.MapPath("/");
            string fullSavePath = path + string.Format(@"Matadata\Out\New_Mapped_Store\Store_Match{0}.csv", DateTime.Now.ToString("yyyyMMdd"));

            // Delete the file if it exists.
            if (File.Exists(fullSavePath))
            {
                File.Delete(fullSavePath);
            }

            //Create the file.
            using (FileStream fs = File.Create(fullSavePath))
            {
            }
            StringBuilder condtion = new System.Text.StringBuilder();
            condtion.Append("SYNCOPERATION <>'D'");
            IBLL<New_Mapped_Store> blle = NPWebApp.Container.Resolve<IBLL<New_Mapped_Store>>();
            ICollection<New_Mapped_Store> table = blle.Search(condtion);
            List<New_Mapped_Store> cloumn = table.ToList();

            Type type = typeof(New_Mapped_Store);
            PropertyInfo[] props = GetPropertyInfoArray(type);
            StringBuilder strValue = new StringBuilder();
            StringBuilder strColumn = new StringBuilder();
            StreamWriter sw = null;

            try
            {
                sw = new StreamWriter(fullSavePath);
                for (int i = 0; i < props.Length; i++)
                {
                    strColumn.Append(props[i].Name);
                    strColumn.Append("|");
                }
                strColumn.Remove(strColumn.Length - 1, 1);
                sw.WriteLine(strColumn);    //write the column name


                for (int i = 0; i < cloumn.Count; i++)
                {
                    strValue.Remove(0, strValue.Length); //clear the temp row value
                    strValue.Append(cloumn[i].ACTIVE_ID);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].CLIENT_CODE);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].STORE_CODE);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].STORE_NAME);
                    strValue.Append("|");
                    strValue.Append(cloumn[i].TARGET_STORE_CODE);
                    sw.WriteLine(strValue); //write the row value
                }
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
            finally
            {
                if (sw != null)
                {
                    sw.Dispose();
                }
            }

            return "Successed";
        }
    }
}
